package cn.s1995.sloth.bizs.entity;

import cn.s1995.sloth.bizs.annotation.SysDictType;
import cn.s1995.sloth.bizs.constant.DictNames;
import cn.s1995.sloth.bizs.converter.SysDictConverter;
import cn.s1995.sloth.bizs.entity.base.BaseEntity;
import cn.s1995.sloth.common.core.convert.JoinUrlPrefixConvert;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.util.List;

/**
 * 店铺
 *
 * @author Lex
 * @date 2023-12-12 08:25:47
 */
@Data
@Accessors(chain = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Schema(description = "店铺")
@TableName(value = "biz_shop", autoResultMap = true)
@ExcelIgnoreUnannotated
public class Shop extends BaseEntity {


	/**
	* ID
	*/
	@ExcelProperty(value = "ID", index = 0)
    @TableId(type = IdType.ASSIGN_ID)
    @Schema(description = "ID")
    private Long id;

	/**
	* 类型：1.普店
	*/
    @Schema(description = "类型：1.普店")
    private Integer type;

	/**
	* 状态: 1.启用 0.禁用
	*/
    @SysDictType(DictNames.biz_com_state_enable)
    @ExcelProperty(value = "状态", index = 2, converter = SysDictConverter.class)
    @Schema(description = "状态: 1.启用 0.禁用")
    private Integer state;

	/**
	* 名称
	*/
    @ExcelProperty(value = "名称", index = 1)
    @Schema(description = "名称")
	@TableField("`name`")
    private String name;

	/**
	* 国家码
	*/
    @Schema(description = "国家码")
	@TableField("`code`")
    private Integer code;

	/**
	* 联系人
	*/
    @ExcelProperty(value = "联系人", index = 3)
    @Schema(description = "联系人")
    private String contacts;

	/**
	* 联系人电话
	*/
    @ExcelProperty(value = "联系人电话", index = 4)
    @Schema(description = "联系人电话")
    private String contactPhone;

	/**
	* 其他电话
	*/
    @ExcelProperty(value = "其他电话", index = 5)
    @Schema(description = "其他电话")
    private String otherPhone;

	/**
	* 老板
	*/
    @ExcelProperty(value = "老板", index = 6)
    @Schema(description = "老板")
    private String boss;

	/**
	* 老板电话
	*/
    @ExcelProperty(value = "老板电话", index = 7)
    @Schema(description = "老板电话")
    private String bossPhone;

	/**
	* 法人
	*/
    @ExcelProperty(value = "法人", index = 8)
    @Schema(description = "法人")
    private String legalPerson;

	/**
	* 法人电话
	*/
    @ExcelProperty(value = "法人电话", index = 9)
    @Schema(description = "法人电话")
    private String legalPersonPhone;

	/**
	* 简介
	*/
    @ExcelProperty(value = "简介", index = 10)
    @Schema(description = "简介")
    private String intro;

	/**
	 * 工厂简介
	 */
	@Schema(description = "工厂简介")
	private String brief;

	/**
	* 公告
	*/
    @Schema(description = "公告")
    private String notice;

	/**
	* 头像
	*/
    @JsonSerialize(using = JoinUrlPrefixConvert.class)
    @Schema(description = "头像")
    private String avatar;

	/**
	* 背景图
	*/
    @JsonSerialize(using = JoinUrlPrefixConvert.class)
    @Schema(description = "背景图")
    private String picBackground;


	/**
	 * 工厂实拍
	 */
    @JsonSerialize(using = JoinUrlPrefixConvert.class)
	@Schema(description = "工厂实拍")
	@TableField(typeHandler = JacksonTypeHandler.class)
	private List<String> factoryPhoto;

	/**
	* 资质
	*/
    @Schema(description = "资质")
    private String qualification;

	/**
	* 环保认证
	*/
    @Schema(description = "环保认证")
    private String environmentalCertification;

	/**
	* 专利证书
	*/
    @Schema(description = "专利证书")
    private String patentCertificate;

	/**
	* 标签
	*/
    @Schema(description = "标签")
    private String tags;

	/**
	* 省code
	*/
    @Schema(description = "省code")
    private String provinceCode;

	/**
	* 城市code
	*/
    @Schema(description = "城市code")
    private String cityCode;

	/**
	* 区code
	*/
    @Schema(description = "区code")
    private String areaCode;

	/**
	* 省
	*/
    @Schema(description = "省")
    private String province;

	/**
	* 市
	*/
    @Schema(description = "市")
    private String city;

	/**
	* 区
	*/
    @Schema(description = "区")
    private String area;

	/**
	* 详细地址
	*/
    @ExcelProperty(value = "详细地址", index = 11)
    @Schema(description = "详细地址")
    private String address;

	/**
	* 经度
	*/
    @Schema(description = "经度")
    private BigDecimal longitude;

	/**
	* 纬度
	*/
    @Schema(description = "纬度")
    private BigDecimal latitude;

	/**
	* 主营产品
	*/
    @ExcelProperty(value = "主营产品", index = 12)
    @Schema(description = "主营产品")
    private String mainProd;

	/**
	* 产品风格
	*/
    @ExcelProperty(value = "产品风格", index = 13)
    @Schema(description = "产品风格")
    private String prodStyle;

	/**
	* 市场定位
	*/
    @ExcelProperty(value = "市场定位", index = 14)
    @Schema(description = "市场定位")
    private String marketPositioning;

	/**
	* 工厂面积
	*/
    @Schema(description = "工厂面积")
    private String factoryArea;

	/**
	* 开厂年限
	*/
    @Schema(description = "开厂年限")
    private String factoryYear;

	/**
	* 工厂说明
	*/
    @Schema(description = "工厂说明")
    private String factoryRemark;

	/**
	* 门头照
	*/
    @JsonSerialize(using = JoinUrlPrefixConvert.class)
    @Schema(description = "门头照")
	@TableField(typeHandler = JacksonTypeHandler.class)
    private List<String> picDoorstepPhoto;

	/**
	* 办公区域
	*/
    @JsonSerialize(using = JoinUrlPrefixConvert.class)
    @Schema(description = "办公区域")
	@TableField(typeHandler = JacksonTypeHandler.class)
    private List<String> picOfficeArea;

	/**
	* 生产区域
	*/
    @JsonSerialize(using = JoinUrlPrefixConvert.class)
    @Schema(description = "生产区域")
	@TableField(typeHandler = JacksonTypeHandler.class)
    private List<String> picProductionArea;

	/**
	* 仓库区域
	*/
    @Schema(description = "仓库区域")
    @JsonSerialize(using = JoinUrlPrefixConvert.class)
	@TableField(typeHandler = JacksonTypeHandler.class)
    private List<String> picWarehouseArea;

	/**
	* 工厂展厅
	*/
    @Schema(description = "工厂展厅")
    @JsonSerialize(using = JoinUrlPrefixConvert.class)
	@TableField(typeHandler = JacksonTypeHandler.class)
    private List<String> picFactoryShowroom;

	/**
	* 其他图片
	*/
    @Schema(description = "其他图片")
    @JsonSerialize(using = JoinUrlPrefixConvert.class)
	@TableField(typeHandler = JacksonTypeHandler.class)
    private List<String> picOtherPhoto;

	/**
	 * 三眼狐id
	 */
	@Schema(description = "三眼狐id")
	private String syhId;

	/**
	 * 三眼狐用户id
	 */
	@Schema(description = "三眼狐用户id")
	private String syhUserId;

	/**
	* 删除标识
	*/
	@TableLogic
	@TableField
    @Schema(description = "删除标识", hidden = true)
    private Boolean delFlag;
}
